package com.lzy.business.facade;

import com.lzy.base.apis.DeptServiceApi;
import com.lzy.base.dtos.DeptDto;
import com.lzy.framework.core.ensure.Ensure;
import com.lzy.framework.core.utils.DozerUtils;
import com.lzy.product.apis.DeptDividedServiceApi;
import com.lzy.product.common.util.UserUtil;
import com.lzy.product.dtos.DeptDividedDto;
import com.lzy.product.dtos.ProductDeptDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class ProductDeptFacade {
    @Autowired
    private DeptServiceApi deptServiceApi;
    @Autowired
    private DeptDividedServiceApi deptDividedServiceApi;

    /**新增部门
     * @param deptDto
     * @return
     */
    public Boolean createDept(ProductDeptDto deptDto){
        DeptDto dto = DozerUtils.map(deptDto,DeptDto.class);
        Long id = deptServiceApi.addDeptDto(dto);
        DeptDividedDto dividedDto = DozerUtils.map(deptDto,DeptDividedDto.class);
        dividedDto.setDeptId(id);
        dividedDto.setCreateUser(UserUtil.getCurrentUser().getUserId());
        deptDividedServiceApi.insert(dividedDto);
        return Boolean.TRUE;
    }

    /**修改部门
     * @param deptDto
     * @return
     */
    public Boolean updateDept(ProductDeptDto deptDto){
        DeptDto dto = DozerUtils.map(deptDto,DeptDto.class);
        Boolean flag = deptServiceApi.updateDeptDto(dto);
        Ensure.that(flag).isTrue("");
        DeptDividedDto dividedDto = new DeptDividedDto();
        dividedDto.setOneLevel(deptDto.getOneLevel());
        dividedDto.setTwoLevel(deptDto.getTwoLevel());
        dividedDto.setThreeLevel(deptDto.getThreeLevel());
        dividedDto.setDeptId(dto.getId());
        dividedDto.setUpdateUser(UserUtil.getCurrentUser().getUserId());
        flag = deptDividedServiceApi.updateByDeptId(dividedDto);
        return flag;
    }

    /**通过编号查询部门信息
     * @param id
     * @return
     */
    public ProductDeptDto findDeptDtoById(Long id) {
        DeptDto dept = deptServiceApi.findDeptDtoById(id);
        ProductDeptDto deptDto = DozerUtils.map(dept,ProductDeptDto.class);
        DeptDividedDto dividedDto = deptDividedServiceApi.findByDeptId(id);
        if (dividedDto != null){
            deptDto.setOneLevel(dividedDto.getOneLevel());
            deptDto.setTwoLevel(dividedDto.getTwoLevel());
            deptDto.setThreeLevel(dividedDto.getThreeLevel());
        }
        return deptDto;
    }
}
